import Vue from 'vue'
import Vuex from 'vuex'
import cookie from '@/utils/cookie.js'
import createPersistedState from 'vuex-persistedstate'
Vue.use(Vuex)

const modulesFiles = require.context('./modules', true, /\.js$/)

const stockpile = new createPersistedState({
	paths: ['dict', 'user'], // 这里便只会缓存dict 和 user下的state值
	storage: {
		getItem: (key) => cookie.get(key),
		setItem: (key, value) => cookie.set(key, value),
		removeItem: (key) => cookie.remove(key),
	},
})
const modules = modulesFiles.keys().reduce((modules, modulePath) => {
	const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')
	const value = modulesFiles(modulePath)
	modules[moduleName] = value.default
	return modules
}, {})

export default new Vuex.Store({
	modules,
	plugins: [stockpile]
})